"""
Interfaces for Continual Learning Framework components.

This package defines the interfaces and abstract base classes that form the
contract between components in the continual learning framework.
"""

# Core interfaces
from .methods import MethodInterface, TaskAdaptProtocol
from .callbacks import CallbackInterface

# Core types and components
from .core import (
    ComponentInterface,
    PEFTMethod,
    PromptPosition,
    AdapterType,
    HookType,
    HookState,
    TaskAwareInterface,
    TaskIrrelevantInterface,
)

# Model interfaces
from .models import (
    BackboneInterface,
    HeadInterface,
    MultiHeadInterface,
    ModelInterface,
    AdapterInterface,
    HookBasedAdapterInterface,
    HookFactoryInterface,
    HookInterface,
    TaskSpecificHookInterface,
    TaskAwareHookInterface,
    HookManagerInterface,
    TaskAwareHookManagerInterface,
    ModuleFinder,
    RouterInterface,
    CombinerInterface,
    InterfaceValidator,
    InterfaceValidationError,
)

# Type definitions
from .types import (
    AdapterOutput,
    BackboneOutput,
    ModelOutput,
    HookOutput,
    TensorLike,
    BatchData,
    TaskData,
)


__all__ = [
    "TaskAdaptProtocol",
    # Core interfaces and types
    "MethodInterface",
    "CallbackInterface",
    "ComponentInterface",
    "AdapterType",
    "PEFTMethod",
    "PromptPosition",
    "HookType",
    "HookState",
    "TaskAwareInterface",
    "TaskIrrelevantInterface",
    # Model interfaces
    "MultiHeadInterface",
    # Model architecture interfaces
    "BackboneInterface",
    "HeadInterface",
    "ModelInterface",
    # PEFT interfaces
    "AdapterInterface",
    "HookBasedAdapterInterface",
    "TaskAwareInterface",
    "HookInterface",
    "TaskSpecificHookInterface",
    "TaskAwareHookInterface",
    "ModuleFinder",
    "HookFactoryInterface",
    "HookManagerInterface",
    "TaskAwareHookManagerInterface",
    "RouterInterface",
    "CombinerInterface",
    # Validation utilities
    "InterfaceValidator",
    "InterfaceValidationError",
    # Output types
    "BackboneOutput",
    "AdapterOutput",
    "ModelOutput",
    "HookOutput",
    "BatchData",
    "TaskData",
    "TensorLike",
]
